/**
 * Request需要传5个参数
 * 1.代码是否需要传Token,默认不需要
 * 2.指定请求方式
 * 3.请求携带的参数
 * 4.请求成功的回调方法
 * 5.请求失败的回调方法
 */
import app from '../App.vue'
import { baseUrl, appid } from '@/js/config/index.js'

const request = (isToken, methods, param, callback, failCallback) => {
	let userToken = uni.getStorageSync('token');
	//需要token的判断
	if (isToken && !userToken && userToken !== 'undefined') {
		uni.hideLoading();
		// #ifdef H5
		uni.navigateTo({
			url: '/pages/login/login?msg=' + JSON.stringify(param)
		})
		// #endif
		// #ifdef MP-WEIXIN
		uni.navigateTo({
			url: '/pages/login/wxLogin?msg=' + JSON.stringify(param)
		})
		// #endif
	} else {
		uni.request({
			url: baseUrl + param.url,
			data: param.data,
			method: methods,
			header: {
				'Content-Type': methods === 'get' ? 'application/x-www-form-urlencoded' :
					'application/json; charset=utf-8',
				'Authorization': userToken || ''
			},
			success: (res) => {
				if (res.data.code == 200 || res.data.status == 1) {
					uni.hideLoading();
					callback(res.data);
				} else {
					//登录过期
					if (res.data.status == -9999) {
						uni.clearStorage();
						// app.globalData.loginHandle();
						uni.hideLoading();
						uni.showToast({
							title: res.data.msg,
							icon: 'none',
							duration: 1500
						});
						setTimeout(function() {
							// #ifdef H5
							uni.navigateTo({
								url: '/pages/login/login?msg=' + JSON.stringify(param)
							})
							// #endif
							// #ifdef MP-WEIXIN
							uni.navigateTo({
								url: '/pages/login/wxLogin?msg=' + JSON.stringify(param)
							})
							// #endif
						}, 650);
					} else {
						uni.hideLoading();
						uni.showToast({
							title: res.data.msg || res.data.error,
							icon: 'none',
							duration: 2000
						});
						if (failCallback != undefined && res.data.status != -23333) {
							failCallback(res.data);
						}
					}
				}
			},
			fail() {
				uni.hideLoading();
				uni.showToast({
					title: '网络异常，请稍后尝试！',
					icon: 'none'
				});
				if (failCallback) {
					failCallback()
				}
			}
		});
	}
};

export default {
	request
};